#include <iostream>
using namespace std;
// g++ -o test_decltype test_decltype.cc -std=c++11
int arr[5] = {0};
double var1;
int func1();
// int func1(int);
int& func2();
int&& func3();

void test() {
  decltype(arr) a;
  cout << a << endl;
  // func1为重载函数时会出现编译错误
  decltype(func1()) b = 5;    // int
  decltype(func1) c;          // (int)(),函数指针
  decltype(func2()) d = b;    // int&
  decltype((var1)) e = var1;  // double&
}
int main() {
  test();
  return 0;
}